// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_BASE_COCOA_APPKIT_UTILS_H
#define UI_BASE_COCOA_APPKIT_UTILS_H

#import <Cocoa/Cocoa.h>

#include "ui/base/ui_base_export.h"

namespace ui {

struct NinePartImageIds {
    int top_left;
    int top;
    int top_right;
    int left;
    int center;
    int right;
    int bottom_left;
    int bottom;
    int bottom_right;
};

// A macro to define arrays of IDR constants used with DrawNinePartImage.
#define IMAGE_GRID(x)                                      \
    {                                                      \
        x##_TOP_LEFT, x##_TOP, x##_TOP_RIGHT,              \
            x##_LEFT, x##_CENTER, x##_RIGHT,               \
            x##_BOTTOM_LEFT, x##_BOTTOM, x##_BOTTOM_RIGHT, \
    }

// Utility method to draw a nine part image using image ids.
UI_BASE_EXPORT void DrawNinePartImage(NSRect frame,
    const NinePartImageIds& image_ids,
    NSCompositingOperation operation,
    CGFloat alpha,
    BOOL flipped);

// Minimizes or zooms the window, or does nothing, depending on OS version and
// system configuration.
// |window| is the receiver of the double click.
// |sender| is the object that sends the action, if one is sent.
UI_BASE_EXPORT void WindowTitlebarReceivedDoubleClick(NSWindow* window,
    id sender);

} // namespace ui

#endif // UI_BASE_COCOA_APPKIT_UTILS_H
